Rolling back 6.3.0 to 6.2.x versions (introduced in v6.3.0)
Procedure
-
Revert the database data using the rollback job from the 6.3.0 chart.
Render only the pre-rollback resources from the 6.3.0 chart and apply them with
kubectl. The hook annotations are inert when applied this way, so the job runs as a normal job.noteIn the rollback job command, set the value of
--set preInstallDBPrep.executePrerollbackDbMigratetotrue. It is located at<6.3.0 root directory>/charts/preInstallDBPrep/values.yaml.helm template <release> ./deploy -n <namespace> \
-s charts/preInstallDBPrep/templates/prerollback-configmap.yaml \
-s charts/preInstallDBPrep/templates/prerollback-job.yaml \
--set global.domainSuffix=<domain-suffix> \
--set global.apimImageRegistry=<registry> \
--set global.imagePullPolicy=<policy> \
--set global.mysqlDatabase.host=<db-host> \
--set global.mysqlDatabase.port=<db-port> \
--set preInstallDBPrep.executePrerollbackDbMigrate=true \
--set preInstallDBPrep.initDBUserName=<dml-user> \
--set preInstallDBPrep.initDBUserPassword=<dml-password> \
--set preInstallDBPrep.ttlSecondsAfterFinished=300 \
| kubectl apply -f -kubectl wait --for=condition=complete job/prerollback-dbmigrate-6-3-0 -n <namespace> --timeout=120s
kubectl logs job/prerollback-dbmigrate-6-3-0 -n <namespace>The job logs show the number of rows reverted per table.
-
Run the following Helm rollback command to go back to the previous version:
helm rollback <release> <6.2.x-revision> -n <namespace> -
Clean up and run a full loader job.
The cache wipe that happens during the upgrade also applies to rollback pod restarts, so run a full data load again.
kubectl delete configmap prerollback-configmap -n <namespace>
kubectl create job --from=cronjob/loader-job-full loader-job-full-manual -n <namespace>